<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>

<script>
  // 注意: 以下代码为伪代码 => 不能直接运行的, 便于理解的


  // 封装一个异步操作 (简写)
  async function getInfo () {
    const res = await reqGetUserInfo()
    return res.data   // 这里的 return 等价于对于外层自动包装的promise的 resolve(值)
  }
  const userInfo1 = await getInfo() // 等getInfo执行完了之后, 才进行下面的操作

  // ---------------------------------------------------------
  // 需求: 上面的代码用promise改写 (底下纯原生)
  // 当一个函数, 被async包裹之后, 可以理解为自动包装了一层promise
  function getInfo () {
    return new Promise((resolve, reject) => {
      // 原生promise内部回调, 不支持用async await
      reqGetUserInfo().then(res => {
        resolve(res.data)
      })
    })
  }
  const userInfo2 = await getInfo()


</script>
  
</body>
</html>